|
Software architecture refers to the high level structures of a software system, the discipline of creating such structures, and the documentation of these structures. These structures are needed to reason about the software system. Each structure comprises software elements, relations among them, and properties of both elements and relations.〔 〕 The ''architecture'' of a software system is a metaphor, analogous to the architecture of a building. Software architecture is about making fundamental structural choices which are costly to change once implemented. Software architecture choices include specific structural options from possibilities in the design of software. For example, the systems that controlled the space shuttle launch vehicle had the requirement of being very fast and very reliable. Therefore, an appropriate real-time computing language would need to be chosen. Additionally, to satisfy the need for reliability the choice could be made to have multiple redundant and independently produced copies of the program, and to run these copies on independent hardware while cross-checking results. Documenting software architecture facilitates communication between stakeholders, captures early decisions about the high-level design, and allows reuse of design components between projects.〔 〕 ==Scope== Opinions vary as to the scope of software architecture: * ''Overall, macroscopic system structure''; this refers to architecture as a higher level abstraction of a software system that consists of a collection of computational ''components'' together with ''connectors'' that describe the interaction between these components. * ''The important stuff—whatever that is''; this refers to the fact that software architects should concern themselves with those decisions that have high impact on the system and its stakeholders. * ''That which is fundamental to understanding a system in its environment"〔(ISO/IEC/IEEE 42010: Defining "architecture" ). Iso-architecture.org. Retrieved on 2013-07-21.〕 * ''Things that people perceive as hard to change'';〔 since designing the architecture takes place at the beginning of a software system's lifecycle, the architect should focus on decisions that "have to" be right the first time. Following this line of thought, architectural design issues may become non-architectural once their irreversibility can be overcome. * ''A set of architectural design decisions'';〔 software architecture should not be considered merely a set of models or structures, but should include the decisions that lead to these particular structures, and the rationale behind them. This insight has led to substantial research into software architecture knowledge management. There is no sharp distinction between software architecture versus design and requirements engineering (see Related fields below). They are all part of a "chain of intentionality" from high-level intentions to low-level details. 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「software architecture」の詳細全文を読む スポンサード リンク
|